package creadores;

import java.util.ArrayList;

import modelo.Escenario;
import modelo.Nivel;
import modelo.TanqueEnemigo;
import utilitarios.PuntoXY;

public class FabricaEnemigos {

	private static int TIEMPO_SIN_TANQUES = 500;

	private Nivel nivel;
	private int contadorTiempo;
	private Escenario escenario;
	private ArrayList<CreadorEnemigos> catalogo = new ArrayList<CreadorEnemigos>();
    private int enemigosPorFabricar;

	public FabricaEnemigos(Escenario escenario, Nivel nivel) {
		this.escenario = escenario;
		this.nivel = nivel;
		this.contadorTiempo = 0;
		this.enemigosPorFabricar = nivel.getCantidadEnemigos();
		this.cargarCatalogo();
	}

	private void cargarCatalogo() {
		this.catalogo.add(new CreadorTanqueGrizzly());
		this.catalogo.add(new CreadorTanqueMirage());
		this.catalogo.add(new CreadorTanqueIFV());
	}

	public void vivir() {
		if (this.nivel.getCantidadEnemigos() <= 0) {
		      return;
		}

		if (contadorTiempo == 0) {
			int tipoEnemigo = (int) (Math.random() * catalogo.size());
			CreadorEnemigos creador = catalogo.get(tipoEnemigo);
			TanqueEnemigo enemigo = creador.crear(escenario, new PuntoXY(15, 15));
			if (enemigo != null) {
				if (!escenario.agregarObjeto(enemigo)) {
		            enemigo = creador.crear(escenario, new PuntoXY(485, 15));
				    escenario.agregarObjeto(enemigo);
				}
                this.enemigosPorFabricar -= 1;
                this.contadorTiempo = FabricaEnemigos.TIEMPO_SIN_TANQUES;
			}
		} else {
			this.contadorTiempo -= 1;
		}

	}

    public int getEnemigosPorFabricar() {
        return this.enemigosPorFabricar;
    }

}
